package persistencia;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import exceptions.PersistenciaException;

public class Persistencia 
{
	public static Persistencia instance = null;
	private Configuracion config = null;
	
	private Persistencia() throws PersistenciaException {
		this.config = Configuracion.getInstancia();
	}
	
	synchronized public static Persistencia getInstancia() throws PersistenciaException {
		if (Persistencia.instance == null){
			Persistencia.instance = new Persistencia();
		}
		return Persistencia.instance;
	}
	
	synchronized public void persistirMensaje (String ipEmisor, String mensaje) throws PersistenciaException
	{
		/*
		 * 1. agrego al archivo de texto que contiene el historial de mensajes recibidos
		 *    el mensaje recibido junto con la dirección IP del emisor
		 */
		BufferedWriter buffer;
		try {
			buffer = new BufferedWriter(
				new FileWriter(this.config.getProperty(Configuracion.ARCHIVO_PERSISTENCIA), true)
			);
			
			buffer.append(ipEmisor + " : " + mensaje);
			buffer.newLine();
			buffer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			throw new PersistenciaException(PersistenciaException.ERROR_GUARDANDO_MENSAJE);
		}
	}
}

